package bszt.honor;

import java.util.Scanner;

public class Code02 {

    /**
     * 题目描述
     * K小姐和A先生在玩一个有趣的游戏。游戏在一个n*m的矩阵上进行，矩阵的每个元素都是一个复数。K小姐先写下一个n*2的矩阵U，每一行表示一个复数，第一列为实部，第二列为虚部。接下来轮到A先生，他需要写下m个n*2的矩阵V_i，每个矩阵的形式与U相同
     * 游戏的目标是找到一个与U的内积最小的矩阵V_i
     * 现在给定矩阵U和V_i，请你帮助K小姐找到答案
     * <p>
     * 输入格式
     * 第一行包含两个正整数n和m，分别表示U的行数和V的个数
     * 接下来n行，每行包含两个实数，表示U中的一行
     * 接下来m个n*2的矩阵，每个矩阵的格式与U相同，表示V_i
     * <p>
     * 输出格式
     * 输出一个整数，表示答案矩阵V_i的编号（从0开始编号）
     */


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        double[][] u = new double[n][2];
        for (int i = 0; i < n; i++) {
            u[i][0] = sc.nextDouble();
            u[i][1] = sc.nextDouble();
        }
        int res = 1001;
        double[][] v = new double[n][2];
        double sum = Double.POSITIVE_INFINITY;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                v[j][0] = sc.nextDouble();
                v[j][1] = sc.nextDouble();
            }
            double[] product = innerProduct(u, v);
            double w = Math.pow(product[0], 2) + Math.pow(product[1], 2);
            if (w < sum) {
                sum = w;
                res = i;
            }
        }
        System.out.println(res);
    }


    public static double[] innerProduct(double[][] u, double[][] v) {
        double real = 0;
        double img = 0;
        for (int i = 0; i < u.length; i++) {
            real += u[i][0] * v[i][0] - u[i][1] * v[i][1];
            img += u[i][0] * v[i][1] + u[i][1] * v[i][0];
        }
        return new double[]{real, img};
    }
}
